home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / gepackte_disketten / 1993 / 05_93_2.dms / 05_93_2.adf / cags / CAGS2-Anleitung < prev    next >
Text File  |  1993-04-23  |  25KB  |  649 lines

  1. (*---------------------------------------------------------------------------*)
  2. (*                                  The                                      *)
  3. (*                   Cyclic Animation-Generating System                      *)
  4. (*                              Version 2.0                                  *)
  5. (*                                                                           *)
  6. (*                                                                           *)
  7. (*                          von Andreas Maschke                              *)
  8. (*---------------------------------------------------------------------------*)
  9.  
  10. Inhalt:
  11.  
  12.     I. Einleitung                                                     Zeile  34
  13.    II. Warum CAGS2 ?                                                  Zeile 126
  14.   III. Anwendungsgebiete                                              Zeile 167
  15.    IV. Die Arbeitweise des Programms                                  Zeile 195
  16.     V. Die verwendeten Datenformate und -bezeichnungen                Zeile 221
  17.    VI. Das Wichtigste: Die Scriptsprache                              Zeile 254
  18.   VII. Tutorial: Das Mobile                                           Zeile 571
  19.  VIII. Abschließende Bemerkungen                                      Zeile 623
  20.    IX. CAGS3                                                          Zeile 650
  21.  
  22. (*---------------------------------------------------------------------------*)
  23.  
  24. I. Einleitung
  25.  
  26. CAGS (The Cyclic Animation-Generating System) ist ein Programm, mit dem sich aus
  27. Einzelbildern und Soundeffekten perfekt vertonte Animationen auf einfachste Art
  28. generieren lassen.
  29.  
  30. Die Leistungsmerkmale:
  31.  -bis zu 999 Frames,
  32.  -frei definierbare Abspielsequenz, die aus bis zu 32767 Angaben bestehen
  33.   kann, gemeint ist die Reihenfolge, in der die Frames abgespielt werden
  34.   sollen (wie Loop und Pingpong),
  35.  -zu JEDEM Frame, wenn erwünscht, ein Musikstück/Soundeffekt (MED-Format (in
  36.   dieses lassen sich alle #?-Tracker-Formate umwandeln)),
  37.  -somit sind Echo u.a. Effekte sowie MIDI möglich (diese Version unterstützt kein MIDI),
  38.  -zu JEDEM Frame, wenn erwünscht, eine neue Abspielgeschwindigkeit,
  39.  -beliebige Bildschirmgröße (von 32*30 bis 736*580),
  40.  -automatische Bildschirmzentrierung
  41.  -wechselnde Paletten,
  42.  -HAM/EHB,
  43.  -hohe Abspielgeschwindigkeit,
  44.  -Kickstart1.3 bis 3.0,
  45.  -Mehr-Disketten-Animationen
  46.  -einfache Handhabung
  47.  
  48. Das System besteht aus drei Programmen:
  49.  CAGS2: Hauptprogramm,
  50.  CAGSPlay: eingeschränkte Version und
  51.  Encryptor: Script-Verschlüsseler.
  52.  
  53. CAGS benötigt ein Script, in dem die nötigen Informationen über die Frames,
  54. die Module und die eigentlichen Sequencen stehen.
  55. Der Aufbau eines solchen Scriptes wird weiter unten beschrieben.
  56. Die Beschreibung der drei Programme:
  57.  
  58. CAGS2:
  59. Dies ist das eigentliche Programm, das alle Funktionen beeinhaltet,
  60. so unterstützt es den Anwender beim Austesten von Scripts mit detaillierten
  61. Fehlermeldungen, es ist aber beim Parsing des Scripts relativ langsam.
  62.  
  63. Gestartet wird es auf Doppelklick, worauf sich ein ASL-Requester zur Auswahl
  64. des Scriptes öffnet, oder in der Shell mit
  65. "CAGS2 <script>",
  66. wobei <script> der Pfad der Scriptdatei ist. Dabei wird das Suffix ".CAGS"
  67. unterstützt, d.h. daß das Script "Anim.CAGS" durch
  68. "CAGS2 Anim" gefunden wird.
  69.  
  70. Nun wird das Script "übersetzt", tritt dabei ein Fehler auf, so wird die
  71. Art des Fehlers ausgegeben. Zusätztlich wird auch die Zeile und die
  72. ungefähre Spalte angeben, es bietet sich also an, CAGS2 aus dem Editor
  73. heraus zu starten. Da das Programm reentrant ist, gewinnt man beim Testen des
  74. Scriptes durch "resident CAGS2" zusätzlich Zeit.
  75.  
  76. War das Script o.k., so erscheint das Arbeitsdisplay und die Daten werden geladen.
  77. Tritt dabei wiederum ein Fehler auf, so wird auch hier eine detaillierte Meldung
  78. ausgegeben.
  79.  
  80. CAGSPlay:
  81. Dieses Programm leistet das gleiche wie CAGS2, nur gibt es keinerlei
  82. Fehlermeldungen aus, öffnet keinen Dateirequester und es bearbeitet nur
  83. mit dem Encryptor verschlüsselte Scripts !
  84. Es ist aber beim Parsing sehr viel schneller als CAGS2.
  85. Man sollte also nur mit CAGS2 getestete, lauffähige Scripts mit diesem Programm
  86. bearbeiten, der Vorteil liegt in der Schnelligkeit und Kürze des Programmes,
  87. außerdem ist das Paket für kommerzielle Zwecke entworfen worden,
  88. so ist CAGSPlay der frei vertreibbare Player, wie das so üblich ist.
  89. Wer also nur CAGSPlay besitzt, kann keine Animationen selbst erstellen, da
  90. das Script IDEA-verschlüsselt wird.
  91. Dieser Algorythmus gilt als absolut sicher, benutzt wird übrigens die
  92. xpkIDEA.library. Das nötige Passwort ist auch ziemlich sicher, da es
  93. zur Laufzeit durch eine recht komplizierte Formel berechnet wird, es läßt
  94. sich also nicht patchen (Ich selbst kenne es nicht einmal).
  95.  
  96. Encryptor:
  97. Dieses Programm verschlüsselt unverschlüsselte Scripts und entschlüsselt
  98. verschlüsselte Scripts. Für den Aufruf gilt das gleiche wie für CAGS2.
  99. Das Programm zeigt nach dem Start an, ob das Script verschlüsselt wird
  100. oder nicht (den Status erkennt es selbst).
  101.  
  102. Wichtig ist, daß Encryptor und CAGSPlay die gleiche Versionsnummer haben,
  103. sonst sind die Passwörter inkompatibel.
  104.                                ...
  105.  
  106. Das Konzept von CAGS ist, die maximale Abspielgeschwindigkeit bei der
  107. Verwendung von Fast-RAM zu erreichen, sodaß keinerlei Delta-Kompression
  108. verwendet wird. Somit ist auch das Handling einfacher (es ist ein Unterschied
  109. ob ein Read-Error bei einem 3 MB Anim-File auftritt, das dann vollständig
  110. verloren ist, oder ob sich dieser nur auf ein Frame bezieht.
  111. Außerdem gehört spätestens nach dem Erscheinen der neuen Amiga-Modelle das
  112. ANIM-Opt#5-Format der Vergangenheit an.
  113.  
  114. (*---------------------------------------------------------------------------*)
  115.  
  116. II. Warum CAGS ?
  117.  
  118. In den drei Jahren, in denen ich mich nun mit Computeranimationen
  119. beschäftige, habe ich kein Programm finden können, mit dem sich Ideen
  120. bis ins Detail verwirklichen lassen. Gute RayTracer gibt es genug,
  121. aber damit lassen sich halt nur die Einzelbilder berechnen, was dann ?
  122.  
  123. -Angenommen, man berechnet die Animation eines Mobiles, und spielt diese
  124.  dann in DPaint im Pingpong-Modus ab. Der erzielte Effekt ist gleich Null,
  125.  erstens ist die Abspielgeschwindigkeit nicht konstant, zweitens ist
  126.  das Wichtigste, das Aneinanderschlagen der Kugeln, nicht zu hören.
  127.  
  128.  Neben hoher Abspielgeschwindigkeit benötigt man also Soundunterstützung,
  129.  und zwar mit all den schönen Effekten wie Echo, Fading usw., die gängige
  130.  Musikprogramme bieten.
  131.  
  132. -Oder was macht man, wenn der Bewegungsablauf einer Animation nicht ganz
  133.  stimmt (z.B. fallender Ball: h=g/2*t^2 , das läßt sich offenbar schwer im
  134.  Raytracer perfekt hinkriegen) ? Alle Frames nochmal berechnen ?
  135.  
  136.  Man benötigt die Möglichkeit, für jedes Frame eine bestimmtes Delay
  137.  anzugeben (also z.B. dieses nach obiger Formel zu berechnen).
  138.  
  139. -Was ist, wenn man aus Speicherplatzgründen nur kleine Bilder berechnen kann ?
  140.  Die meisten Animationsprogramme unterstützen nur bildschirmgroße Animationen
  141.  bzw. klemmen die Frames dann in die obere linke Ecke, wobei dann auch noch
  142.  sehr schwere Fehler bei der Bildschirmdarstellung vorkommen.
  143.  
  144.  Man benötigt neben der Unterstützung beliebiger Bildschirmgrößen eine
  145.  Auto-Center-Funktion.
  146.  
  147. -Oder folgendes: Eine Kugel schwingt immer heftiger bis sie schließlich
  148.  explodiert. Beim Schwingen sollen aber immer die gleichen Frames verwendet
  149.  werden.
  150.  
  151.  Hierzu benötigt man frei definierbare Sequencen.
  152.  
  153.  All dies bietet CAGS.
  154.  
  155. (*---------------------------------------------------------------------------*)
  156.  
  157. III. Anwendungsgebiete
  158.  
  159. CAGS eignet sich besonders für Raytracing-Animationen im HAM-Modus, wofür es
  160. auch konzipiert ist.
  161. Alle anderen normalen Grafik-Modi funktionieren aber einwandfrei (auch
  162. maximaler Overscan).
  163.  
  164. Systemanforderungen:
  165. Der Speicherverbrauch der Frames läßt sich einfach berechnen:
  166.  
  167. (width DIV 8)*height*planes*frames+2^planes*8*frames
  168.  
  169. Dazu kommen noch die Soundmodule (Summe der Dateilängen), die Felder für
  170. die Sequencen (INTEGER=unwesentlich) und ca. 50 K für das eigentliche Programm,
  171. d.h. mit 200K könnte man schon ein Bild anzeigen und dazu einen Sound abspielen.
  172.  
  173. empfohlene Animationssoftware:
  174. bei 1-2MB: FastRay, Reflections1.6 & Animator1.6, GM-The Animator (ein auch von
  175.            mir entwickeltes Paket zur Animation und Metamorphose von
  176.            dreidimensionalen Funktionen (1 Lichtquelle))
  177. bei 2-4MB: Reflections2.0 & Animator2.0
  178. bei 4-8MB: Imagine
  179.  
  180. Natürlich eignen sich auch alle anderen bilderzeugenden Programme wie MorphPlus,
  181. DPaintIV, ..., aber damit kenne ich mich nicht aus (Speicherverbrauch).
  182.  
  183. (*---------------------------------------------------------------------------*)
  184.  
  185. IV. Die Arbeitweise des Programms
  186.  
  187. Zuerst benötigt CAGS ein Script, indem die Information über Größe, Anzahl
  188. und Ort der Bilder, Anzahl der MED-Module und die Sequencen stehen.
  189. Dieses wird übersetzt, trat dabei ein Fehler auf, so wird eine delailierte
  190. Meldung über die Art des Fehlers ausgegeben.
  191. Am besten, man startet das Programm beim Testen aus dem Editor heraus,
  192. dafür gibt das Programm bei Syntax-Fehlern auch die Spalte und Zeile an.
  193. Ist das Script o.k., so werden nun die Daten geladen und das Script
  194. abgearbeitet.
  195. Tritt während der Arbeit an irgendeiner Stelle ein Fehler auf, so wird
  196. sämtlicher Speicher etc. freigegeben. Abstürze sind nicht vorgekommen.
  197.  
  198. Die Frames werden einzeln in den Speicher geladen. Das hat folgende Vorteile:
  199.  -Keine Wartezeit beim Erzeugen der Animation (Die Zeit, um 100 Frames in
  200.   irgend ein Programm zu laden, das dann ein Animfile daraus herstellt, ist
  201.   gemeint, das ist nicht unwesentlich !),
  202.  -sehr hohe Abspielgeschwindigkeit,
  203.  -volle Kontrolle über jedes Frame.
  204. Der Speicherverbrauch im HAM-Modus ist dabei nur unwesentlich höher als
  205. bei Verwendung von Delta-Kompression.
  206. Das deshalb, weil HAM-Bilder aus dem RayTracer so große Unterschiede aufweisen,
  207. das die Delta-Files nahezu Framegröße haben.
  208.  
  209. (*---------------------------------------------------------------------------*)
  210.  
  211. V. Die verwendeten Datenformate und -bezeichnungen
  212.  
  213. CAGS2 liest Bilder im IFF-Format (Imagine,DPaint,ADPro...) und MED-Module,
  214. die durchaus nur ein Sample und eine Note enthalten können. (Oh ja, der
  215. Aufwand lohnt sich.)
  216. Die Bilder können
  217.  -ungepackt,
  218.  -byte-run1-gepackt,
  219.  -XPK-Nuke-gepackt (meiner Meinung der effizienteste Packer, das Entpacken
  220.   ist praktisch (zeitmäßig) nicht zu bemerken),
  221.  -byte-run1- und XPK-Nuke-gepackt sein.
  222. MED-Module zu packen bringt nichts, also habe ich diese Möglichkeit nicht
  223. implementiert.
  224.  
  225. Alle Bilddateien müssen die gleiche Auflösung etc. haben, und müssen in einen
  226. Directory liegen. Der Dateinahme beginnt mit "PIC.0" und danach folgt die
  227. entsprechende Nummer von 1-999. Alle Bilder müssen von einem wählbaren Index
  228. an lückenlos vorhanden sein, sollen also 3 Frames ab Nummer 9 verwendet
  229. werden, so müssen folgende Bilder im entspechenden Verzeichnis liegen:
  230. "PIC.0009","PIC.0010" und "PIC.0011" .
  231.  
  232. Für die Module gilt ähnliches, nur beginnt hier der Name mit "MOD.0".
  233.  
  234. Unterscheiden sich die Werte für Breite,Höhe und Anzahl der Bitplanes der
  235. Frames, die im Script angegeben wurden, von denen, die im BMHD-Chunk stehen,
  236. so wird eine entsprechende Meldung mit dem korrekten Wert ausgegeben.
  237. WICHTIG: Alle anderen Werte werden akzeptiert, so ist es z.B. möglich,
  238. aus Lores-Frames eine Animation im Hires-Interlace-Modus zu erstellen.
  239. Sind die Frames kleiner als ein Standard-Bildschirm, so werden sie später
  240. automatisch zentriert !
  241.  
  242. (*---------------------------------------------------------------------------*)
  243.  
  244. VI. Das Wichtigste: Die Scriptsprache
  245.  
  246. Das Script besteht aus der Zuweisung von Werten in einer an OBERON angelehnten
  247. Syntax, also
  248.  
  249.  var:=<Wert>; oder var=<Wert>; .
  250.  
  251. Die Reihenfolge der Anweisungen ist unwichtig, zwischen zwei Befehlen können
  252. 120 Leerzeichen oder Leerzeilen stehen, damit ist für Übersichtlichkeit
  253. gesorgt. Groß-/Kleinschreibung ist auch egal.
  254. Minimum sind folgende 5 Werte:  frames,width,height,planes und end,
  255. d.h., daß folgendes kurzes Script
  256.  
  257. "width=160; height=100; planes=3; frames=6; end=true;"
  258.  
  259. vollkommen ausreicht, es spielt alle Bilder vorwärts ab, bis die linke
  260. Maustaste gedrückt wird.
  261.  
  262. Nun die Beschreibung aller Variablen:
  263.  
  264.   1. FRAMES
  265.  
  266.  Beschreibung: Anzahl der Bilder,
  267.  Wertebereich: 1 bis 999,
  268.   Defaultwert: nicht gesetzt
  269.      Beispiel: "Frames=55;"
  270.  
  271.   2. WIDTH
  272.  
  273.  Beschreibung: Breite der Bilder
  274.  Wertebereich: 32 bis 736 (muß durch 16 teilbar sein)
  275.   Defaultwert: nicht gestetzt
  276.      Beispiel: "Width=204;"
  277.  
  278.   3. HEIGHT
  279.  
  280.  Beschreibung: Höhe der Bilder
  281.  Wertebereich: 30 bis 580
  282.   Defaultwert: nicht gesetzt
  283.      Beispiel: "Height=133;"
  284.  
  285.   4. PLANES
  286.  
  287.  Beschreibung: Anzahl der Bitplanes
  288.  Wertebereich: 1 bis 6
  289.   Defaultwert: nicht gesetzt
  290.      Beispiel: "Planes=6;"
  291.  
  292.   5. TITLE
  293.  
  294.  Beschreibung: Title der Animation, der im CAGS-Fenster erscheint
  295.  Wertebereich: maximal 30 Zeichen, keine '"'-Zeichen setzen !
  296.   Defaultwert: "untitled"
  297.      Beispiel: "Title=My first step;"
  298.  
  299.   6. LACE
  300.  
  301.  Beschreibung: Interlace an/aus (geht auch bei Nicht-Interlace-Bildern)
  302.  Wertebereich: TRUE/FALSE (T/F reicht auch);
  303.   Defaultwert: FALSE, wird bei Height>290 automatisch auf TRUE gesetzt
  304.      Beispiel: "Lace=True;" ("Lace=False;" geht zwar, bringt aber nichts)
  305.  
  306.   7. HIRES
  307.  
  308.  Beschreibung: Hires an/aus (geht auch auch bei Nicht-Hires-Bildern)
  309.  Wertebereich: TRUE/FALSE
  310.   Defaultwert: FALSE, wird bei Width>366 automatisch auf TRUE gesetzt
  311.      Beispiel: "Hires=T;"
  312.  
  313.   8. HAM
  314.  
  315.  Beschreibung: HAM an/aus
  316.  Wertebereich: TRUE/FALSE
  317.   Defaultwert: TRUE bei Planes=6
  318.      Beispiel: wird ggf. automatisch überschrieben
  319.  
  320.   9. EHB
  321.  
  322.  Beschreibung: ExtraHalfbrite an/aus
  323.  Wertebereich: TRUE/FALSE
  324.   Defaultwert: FALSE
  325.      Beispiel: "ehb=t;" (dadurch wird HAM auf FALSE gesetzt)
  326.  
  327.  10. MODULES
  328.  
  329.  Beschreibung: Anzahl der MED-Module
  330.  Wertebereich: 0-999
  331.   Defaultwert: 0
  332.      Beispiel: "modules=3;"
  333.  
  334.  11. PICPATH
  335.  
  336.  Beschreibung: Pfad für die Bilder
  337.  Wertebereich: maximal 120 Zeichen, keine '"'-Zeichen angeben
  338.   Defaultwert: aktuelles Verzeichnis
  339.      Beispiel: "picpath=rad:rt Pics/;" (Leerzeichen erlaubt)
  340.  
  341.  12. MODPATH
  342.  
  343.  Beschreibung: Pfad für die Bilder
  344.  Wertebereich: maximal 120 Zeichen, keine '"'-Zeichen angeben
  345.   Defaultwert: aktuelles Verzeichnis
  346.      Beispiel: "modpath=ST-67:modules/;"
  347.  
  348.  13. PICSTART
  349.  
  350.  Beschreibung: Anfangsindex für Bilder
  351.  Wertebereich: 0 bis 999-Frames
  352.   Defaultwert: 1
  353.      Beispiel: "picstart=10;" (Bild "PIC.0010" ist erstes Bild)
  354.  
  355.  14. ALTERPAL
  356.  
  357.  Beschreibung: alternierende Palette an/aus
  358.  Wertebereich: TRUE/FALSE
  359.   Defaultwert: FALSE
  360.      Beispiel: "alterpal=t;" (ist für Raytracing-Bilder im HAM-Modus notwendig)
  361.  
  362.  15. LOOP
  363.  
  364.  Beschreibung: Vordefinierte Sequenz: vorwärts endlos abspielen
  365.  Wertebereich: TRUE/FALSE
  366.   Defaultwert: TRUE
  367.      Beispiel: wird ggf. automatisch überschrieben
  368.  
  369.  16. PINGPONG
  370.  
  371.  Beschreibung: Vordefinierte Sequenz: vor und zurück endlos abspielen
  372.  Wertebereich: TRUE/FALSE
  373.   Defaultwert: FALSE
  374.      Beispiel: "pingpong=t;" (setzt loop auf FALSE)
  375.  
  376.  17. VARSPEED
  377.  
  378.  Beschreibung: im Normal-Sequence-Modus (Loop,Pingpong) kann man hiermit die
  379.                Abspielgeschwindigkeit live beeinflussen:
  380.                LMB-schneller, RMB-langsamer, BMB-exit
  381.  Wertebereich: TRUE/FALSE
  382.   Defaultwert: FALSE
  383.      Beispiel: "varspeed=true;" (in diesen Modus gelangt man auch
  384.                durch Drücken des Joystick-Knopfes im Normal-Sequence-Modus)
  385.  
  386.  18. INTROMUS
  387.  
  388.  Beschreibung: spielt während des Ladens der ganzen Daten schon ein Musikstück
  389.                ab, ist Modules=0, so wird das Stück bis ans Ende der Animation
  390.                gespielt
  391.                WICHTIG: Das Stück muß "MOD.0000" heißen
  392.  Wertebereich: TRUE/FALSE
  393.   Defaultwert: FALSE
  394.      Beispiel: "intromus=t;"
  395.  
  396.  19. DELAY
  397.  
  398.  Beschreibung: gibt im Normal-Delay-Modus die Wartezeit in 1/50 s zwischen
  399.                zwei Frames an
  400.  Wertebereich: 0 bis 3000 (1 Minute)
  401.                WICHTIG: 0 nicht im HAM-Modus verwenden
  402.   Defaultwert: 1
  403.      Beispiel: "delay=143;"
  404.  
  405.  20. PICSEQ
  406.  
  407.  Beschreibung: Dies ist neben MODSEQ und DELSEQ das mächtigste Kommando von CAGS,
  408.                erlaubt es, die Frames in beliebiger Reihenfolge abzuspielen.
  409.  
  410.   SYNTAX: "PICSEQ=<Anzahl>:<Nummer>,<Nummer>,...,<Nummer>;
  411.   Die Anzahl darf MAXINT=32676 nicht überschreiten, aber das sollte für jede
  412.   Anwendung ausreichen.
  413.   Nummer gibt die Nummer des Frames an, und zwar von 1 bis frames.
  414.  
  415.   WICHTIG: LOOP und PINGPONG werden durch PICSEQ überschrieben
  416.  
  417.  Beispiel1: Darstellung der LOOP-Sequenz bei 10 Frames durch PICSEQ:
  418.  
  419.   "PICSEQ=10: 1,2,3,4,5,6,7,8,9,10;"
  420.  
  421.  Kann auch so geschrieben werden:
  422.  
  423.   "PICSEQ=10: 1,
  424.               2,
  425.               3,
  426.               4,  5,  6,  7, 8,
  427.                         9, 10 ;"
  428.  
  429.  Beispiel2: Darstellung der PINGPONG-Sequenz bei 10 Frames:
  430.  
  431.  "PICSEQ=18:1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2;"
  432.  
  433.  Beispiel3: Darstellung einer sich aufschaukelnden Schwingung bei 5 Frames:
  434.  
  435.  "PIQSEQ=24:
  436.  1,2,1,
  437.  1,2,3,2,1,
  438.  1,2,3,4,3,2,1,
  439.  1,2,3,4,5,4,3,2,1;"
  440.  
  441.  21. MODSEQ
  442.  
  443.  Beschreibung: Soundeffekt-Sequenz
  444.  
  445.   SYNTAX: "MODSEQ=<Anzahl>:<Nummer>,<Nummer>,...,<Nummer>;
  446.   Die Anzahl darf MAXINT=32676 auch nicht überschreiten.
  447.  
  448.   Nummer gibt
  449.          -die Nummer des Modules an, und zwar von 1 bis modules oder
  450.          -weist bei -1 den Player an zu stoppen der
  451.          -weist bei -2 den Player an, nichts zu tun bzw. das aktuelle
  452.           Modul weiter zu spielen.
  453.  
  454.  Für die Anzahl (MODSEQ) muß folgendes gelten:
  455.   -im LOOP-Modus : MODSEQ=FRAMES,
  456.   -PINGPONG-Modus: MODSEQ=2*FRAMES-2,
  457.   -Sequence-Modus: MODSEQ=PICSEQ;
  458.  
  459.  Beispiel: 5 Frames, PINGPONG-Modus, ein auf ein Brett schlagender Hammer.
  460.  
  461.  Angenommen, der Hammer berührt das Brett bei Frame3 und bohrt sich bis Frame 5
  462.  in das Brett etwas hinein und das Modul, das den Ton des Schlages enthält,
  463.  ist das Modul "MOD.0001", das Modul, das das Knirschen des Brettes
  464.  enthält, ist "MOD.0002", dann führt
  465.  
  466.   "PINGPONG=TRUE;
  467.    MODSEQ=8:
  468.     -2,                      (* Frame1 -keine Aktion *)
  469.     -2,                      (* Frame2 -keine Aktion *)
  470.      1,                      (* Frame3 -Schlag       *)
  471.     -2,                      (* Frame4 -keine Aktion *)
  472.      2,                      (* Frame5 -Knirsch      *)
  473.     -2,                      (* Frame4 -keine Aktion *)
  474.     -1,                      (* Frame3 -Player aus   *)
  475.     -2;                      (* Frame2 -keine Aktion *) (Restart)
  476.  
  477.  zum gewünschten Ergebnis.
  478.  
  479.  22. DELSEQ
  480.  
  481.  Beschreibung: Delay-Sequenz (zu jedem Bild wird die Wartezeit definiert)
  482.  
  483.   SYNTAX: "DELSEQ=<Anzahl>:<Nummer>,<Nummer>,...,<Nummer>;
  484.   Die Anzahl darf MAXINT=32676 auch nicht überschreiten.
  485.  
  486.   Die Anzahl (DELSEQ) muß mit PICSEQ bzw. MODSEQ übereinstimmen
  487.   WICHTIG: DELAY wird dadurch wirkungslos, auch VARSPEED funktioniert
  488.            nicht
  489.   Nummer gibt folgendes an:
  490.          -von 0 bis 3000 die Wartezeit in 1/50 s an
  491.          -bei -1 wird auf das Drücken der rechten Maustaste gewartet
  492.          -    -2 beendet die Animation
  493.  
  494.  23. DCHANGEx (1 bis 5)
  495.  
  496.  Beschreibung: Diskettenwechsel erlauben
  497.  Wertebereich: 1 bis frames
  498.      Beispiel: "DCHANGE3=15"
  499.  
  500.  Dieser Parameter hat den Sinn, eine z.B. 5 MB große Animation auf verschiedenen
  501.  Disketten zu verteilen. Auf jeder muß sich der mit PICPATH definierte Pfad befinden,
  502.  es ist zu empfehlen, in PICPATH keinen Diskettennamen zu verwenden, da sonst alle
  503.  Disketten den gleichen Namen haben müssen.
  504.  
  505.  Es können 5 Diskettenwechsel durchgeführt werden (d.h. man  kann die Animation
  506.  auf 7 Disketten verteilen, da mit MODPATH eine eigene für  die Module angegeben werden
  507.  kann. Das sollte für jede Anwendung ausreichen, meine letzte 5MB große Animation habe
  508.  ich z.B. auf 4 Disketten verteilt.
  509.  Hier sollte man auf jeden Fall INTROMUS=TRUE setzen, meine Animation (byte-run1 und
  510.  NUKE-gepackt) benötigte 10 Minuten Ladezeit.
  511.  
  512.  Vor dem Frame mit der Nummer, die hinter DCHANGEx angeben wird, erfolgt der
  513.  Diskettenwechsel, dabei wird im Status-Fenster statt "Loading..." "DISKCHANGE"
  514.  angezeigt, nun muß die richtige Diskette eingelegt werden, man sollte noch etwa
  515.  3 Sekunden warten, bis das DOS die Diskette anerkannt hat, dann die linke
  516.  Maustaste drücken.
  517.  
  518.  Beispiel: 5 Disketten
  519.  
  520.  Die Disketten mögen folgende Bilder enthalten:
  521.  
  522.  1.Diskette: "PIC.0001" bis "PIC.0009",
  523.  2.Diskette: "PIC.0010" bis "PIC.0023",
  524.  3.Diskette: "PIC.0024" bis "PIC.0026",
  525.  4.Diskette: "PIC.0027" bis "PIC.0148" und
  526.  5.Diskette: "PIC.0149" bis "PIC.0160"
  527.  
  528.  Dann führt etwa folgendes Script zum gewünschten Erfolg:
  529.  
  530.  "width=320;height=256;planes=5;
  531.   frames=160;
  532.  
  533.   picpath=df0:;
  534.   dchange1=10;
  535.   dchange2=24;
  536.   dchange3=27;
  537.   dchange4=149;
  538.  
  539.   end=true;"
  540.  
  541.  Man sollte also die Disketten unbedingt numerieren, damit das Einlegen einer
  542.  falschen vermieden wird, dann würde ja das nächste Bild nicht gefunden und die
  543.  Arbeit  abgebrochen werden.
  544.  Hintergrund: Es wird nicht für jedes Bild ein Dateiname reserviert, weil dadurch
  545.               das Handling sehr erschwert würde (bei 100 Bildern 100 Dateinamen
  546.               einzutippen ist nicht sehr unterhaltsam), außerdem würde dadurch auch
  547.               der Speicherverbrauch ansteigen.
  548.  
  549.  24. END
  550.  
  551.  Beschreibung: Ende des Scriptes
  552.      Beispiel: "end=t;"
  553.  
  554.  DIESE ANWEISUNG MUSS AM ENDE JEDES SCRIPTES STEHEN !
  555.  
  556.  Sinn: Nach diesem Befehl kann man beliebige Texte (Kommentare) in das Script
  557.        schreiben, das ist manchmal sehr angenehm.
  558.  
  559. (*---------------------------------------------------------------------------*)
  560.  
  561. VII. Tutorial: Das Mobile
  562.  
  563. Wir müssen zuerst die Bilder berechnen, z.B. mit Reflections. Und zwar so,
  564. daß die Bewegung in einer Richtung vollständig ist. Ich habe 13 Frames
  565. berechnet.
  566. Es ist sicher angebracht, das Geräusch beim Aneinanderschlagen der Kugeln
  567. abwechselnd auf dem linken und auf dem rechten Lautsprecher ausgeben zu
  568. lassen, wir benötigen also zwei MED-Module.
  569. Zuerst suchen wir nach einem Sample, das metallisch klingt, z.B. irgend ein
  570. Hihat. Nun laden wir MED, gehen in den EDIT-Modus und laden unser Sample.
  571. Nun setzen wir auf Spur 0 das Sample, z.B. Note C-3. Jetzt speichern
  572. wir das ganze als "rad:MOD.0001" ab, löschen die eben gesetzte Note und
  573. setzten sie auf Spur 1 und speichern unser Modul als "rad:MOD.0002" ab.
  574. Nun formatieren wir eine Diskette, benennen sie "Anim-Disk" und richten
  575. die Verzeichnisse "PICS" und "MODS" darauf ein. Auf diese kopieren wir
  576. in die entsprechenden Verzeichnisse die Bilder und die Module.
  577. Nun geht's los. Editor laden und:
  578.  
  579. "TITLE=   The Mobile;
  580.  FRAMES=13;
  581.  WIDTH=272;
  582.  HEIGHT=208;
  583.  PLANES=6;
  584.  MODULES=2;
  585.  PICPATH=Anim-Disk:PICS/;
  586.  MODPATH=Anim-Disk:MODS/;
  587.  ALTERPAL=TRUE;
  588.  PINGPONG=TRUE;"
  589.  
  590. Die Vertonung ist einfach:
  591. Bei meinen Bildern berühren sich die Kugeln bei Frame 7, also
  592.  
  593. "MODSEQ=24:                      (* 2*frames-2 *)
  594.    -2,-2,-2,-2,-2,-2,
  595.     1,                           (* Ton ab: rechter Lautsprecher *)
  596.    -2,-2,
  597.    -1,                           (* Player Stop, ist eigentlich unnötig *)
  598.    -2,-2,-2,-2,-2,-2,-2,-2,
  599.     2,                           (* Ton ab: linker Lautsprecher *)
  600.    -2,-2,
  601.    -1,                           (* Player Stop *)
  602.    -2,-2;
  603. END=t;"
  604.  
  605. Das war's schon !
  606. Das Script speichern wir als "Anim-Disk:Mobile.cags" ab und kopieren noch
  607. das Programm "CAGSPlay" auf die Disk. Nun verschlüsseln wir mit
  608. "Encryptor anim-disk:mobile" das Script und starten es danach durch
  609. "CAGSPlay anim-disk:mobile" (Abbruch mit linker Maustaste).
  610.  
  611. (*---------------------------------------------------------------------------*)
  612.  
  613. VIII. Abschließende Bemerkungen
  614.  
  615. Sollen mit CAGS selbstartende Animationsdisketten erstellt werden, so ist
  616. folgendes zu beachten:
  617.  
  618. -die xpkmaster.library muß sich in libs: befinden,
  619. -sind die Frames NUKE-gepackt, so muß sich im Verzeichnis libs:compressors
  620.  die xpkNUKE.library befinden,
  621. -CAGS2 benötigt unter KS1.3 die info.- und die icon.library,
  622. -CAGSPlay benötigt in libs:compressors auch die xkpIDEA.library,
  623. -das Programm CAGSPlay sollte verwendet werden (Script vorher verschlüsseln),
  624.  einerseits ist es beim Parsing bemerkbar schneller, andererseits kann von
  625.  Leuten, die den Encryptor nicht besitzen, das Script nicht gelesen werden,
  626.  außerdem benötigt das Programm unter KS1.3 NICHT die icon.- und die
  627.  info.library,
  628. -sollte das System CAGS kommerziell vertrieben werden, so MUSS das Programm
  629.  CAGSPlay verwendet werden,
  630. -unter OS2.0/3.0 muß vor dem Aufruf von CAGS in der startup-sequence ein
  631.  type- oder ein echo-Befehl stehen, sodaß das Shell-Window erscheint,
  632.  sonst ist nichts zu sehen !
  633.  
  634. Außerdem suchen CAGS2  und CAGSPlay vor jedem Start nach einem Font namens
  635. "clean" (8 Punkte) im Verzeichnis fonts:, der für das Arbeitsdisplay verwendet
  636. wird (ist besonders unter OS 1.3 zu empfehlen).
  637.  
  638. (*---------------------------------------------------------------------------*)
  639.  
  640. IX. CAGS3
  641.  
  642. CAGS3 wird es geben, sobald ich mir einen A4000 zugelegt habe.
  643. Geplante Features:
  644.  -Unterstützung aller AA-Modi,
  645.  -Wiedereinführung der MIDI-Unterstützung durch MED
  646.  
  647.                                       ...
  648.  
  649.